package model;

import manager.IAnalizadorSintactico;
import manager.IToken;
import manager.ITokenStream;

public class CopyOfAdn1  extends AbstractAnalizadorSintactico implements IAnalizadorSintactico {
	
	/* INICIALIZACION */	
	public CopyOfAdn1 ( ITokenStream ts ) {
		super(ts, false);
	}
	public CopyOfAdn1 ( ITokenStream ts, boolean debugMode ) {
		super(ts,debugMode);
	}
	
	public boolean reconocer () {
		
		boolean recognized = true;
		
		//----------------------------------------------
		//Agrego info de debug de la produccion
		em.debug( "Reconocer ADN1:" );
		//----------------------------------------------
		
/*		ADN1 -> <HEADER> |
				adelantado
		*/

		if ( Header.primeros( this.getTokenSiguiente()) ) {
			
			/*		ADN1 -> <HEADER> */
			
			//----------------------------------------------
			//Agrego info de debug de la produccion
			em.debug( "/*ADN1 -> <HEADER>", this.getTokenSiguiente() );
			//----------------------------------------------

			// Reconocer Termino
			IAnalizadorSintactico header = new Header(this.tokenStream,this.debugMode);
			recognized &= header.reconocer();
			
			
		} else if ( !this.reconocerToken(IToken.PALABRA_RESERVADA_ADELANTADO) ) {
			return false;
		}
		
		return recognized;
	}
	
	public static boolean primeros(IToken token) {
		return  token.equals( new Token(IToken.PALABRA_RESERVADA_CONST) ) ||
				token.equals( new Token(IToken.PALABRA_RESERVADA_VAR) )||
				token.equals( new Token(IToken.PALABRA_RESERVADA_ADELANTADO) );
	}
}

